﻿// SNOCR.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include "SNOCR.h"

int main()
{
	struct SN_STATU statu = { 0 };
	
	char szExeFullPath[4096] = { 0 };
	char szImagePath[4096] = { 0 };
	//卡密
	char szKey[4096] = "SNKJ86RYDBY1YxafpLG3ep1R6NHFYLjz2UFFcE8Lx9Tq";
	//onnx模型路径
	char szOnnxFullPath[4096] = { 0 };

	GetModuleFileName(NULL, szExeFullPath, 4096);
	*strrchr(szExeFullPath, '\\') = 0;
	sprintf(szOnnxFullPath, "%s\\SNOCR.onnx", szExeFullPath);
	// 注意路径不要带有中文
	sprintf(szImagePath, "%s\\7.jpg", szExeFullPath);

	//1.启动OCR服务
	int ret = apiSNInitOCRServer(szOnnxFullPath, &statu);
	if (ret < 0)
	{
		printf("Error:%s \n", statu.message);
		return 0;
	}

	//2.创建OCR句柄
	HANDLE handle = apiSNCreateOCRHandle(szKey, szOnnxFullPath, &statu);
	if (!handle)
	{
		printf("Error:%s \n", statu.message);
		return 0;
	}

	//3.获取卡密到期时间
	char* szTime = apiSNGetKeyExpiresTime(handle, &statu);
	if (!szTime)
	{
		printf("Error:%s \n", statu.message);
		return 0;
	}

	//4.识别OCR，返回Json字符串
	char* szJson = apiSNGetOCRFromImage(handle, szImagePath, &statu);
	if (!szJson)
	{
		printf("Error:%s \n", statu.message);
		return 0;
	}
	printf("%s \n", szJson);
	//5.释放内存
	apiSNDestroyOCRHandle(handle);

	getchar();
}

